import { http } from "@/utils/http";

// 员工数据类型定义（根据API文档7.2员工列表）
export interface Employee {
  t_id: string; // 员工id
  t_name: string; // 员工姓名
  t_mobile: string; // 员工手机
  t_sex: string; // 性别：1 男，2 女
  t_status: string; // 状态：1 在职，-1 离职
  t_utime: string; // 更新时间
  t_ctime: string; // 创建时间
  sex: string; // 性别中文
  t_type: string; //员工类别 '1'技师 '2'客服
}

// 搜索参数类型（根据API文档）
export interface EmployeeSearchParams {
  num?: string; // 每页数据条数 默认10,范围1-100
  page?: string; // 获取数据的页数 默认 1
  keys?: string; // 姓名、手机号、手机号后4位
  status?: string; // 员工状态：1 在职，-1 离职 默认空 全部
}

// 添加员工参数类型
export interface AddEmployeeParams {
  name: string; // 员工姓名
  mobile: string; // 员工电话
  level: string; // 员工级别：1 普通员工，2 管理员
  sex?: string; // 员工性别：1 男，2 女
  status?: string; // 状态：1 在职，-1 离职
}

// 编辑员工参数类型
export interface EditEmployeeParams {
  id: string; // 员工id
  name: string; // 员工姓名
  mobile: string; // 员工电话
  level: string; // 员工级别：1 普通员工，2 管理员
  sex?: string; // 员工性别：1 男，2 女
  status?: string; // 状态：1 在职，-1 离职
}

// API返回结果类型（根据API文档）
export interface ApiResult<T = any> {
  code: number; // 状态码：1 成功
  msg: string; // 描述
  data: T; // 数据
}

// 员工列表返回数据类型
export interface EmployeeListData {
  pages: number; // 总页数
  list: Employee[]; // 员工列表
}

/** 获取员工列表（根据API文档7.2员工列表） */
export const getEmployeeList = (params: EmployeeSearchParams = {}) => {
  return http.request<ApiResult<EmployeeListData>>(
    "post",
    "/admin/employee.php?act=list",
    {
      data: params
    }
  );
};
/** 获取员工等级列表（根据API文档7.2员工列表） */
export const getEmployeeLevel = () => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=get_level", {
    data: []
  });
};
/** 添加员工（根据API文档7.1添加员工） */
export const addEmployee = (params: AddEmployeeParams) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=add", {
    data: params
  });
};

/** 编辑员工（根据API文档7.3编辑员工） */
export const editEmployee = (params: EditEmployeeParams) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=edit", {
    data: params
  });
};

/** 切换员工状态（根据API文档7.4切换状态） */
export const switchEmployeeStatus = (id: number) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=switch", {
    data: { id }
  });
};
/**获取陪班人员名字*/
export const getDutyPerson = () => {
  return http.request<ApiResult>(
    "post",
    "/admin/duty.php?act=get_duty_person",
    {}
  );
};

// 临时占用相关类型定义（根据API文档6.临时占用）

// 新增占用参数类型（根据API文档6.1新增占用）
export interface AddOccupationParams {
  tid: number; // 员工id
  sdate: string; // 占用开始时间 (格式: 2025-06-05 11:10:00)
  edate: string; // 占用结束时间 (格式: 2025-06-05 13:30:00)
  remark: string; // 备注
}

// 编辑占用参数类型（根据API文档6.4编辑占用）
export interface EditOccupationParams {
  id: number; // 占用id
  tid: number; // 员工id
  sdate: string; // 占用开始时间 (格式: 2025-06-05 11:10:00)
  edate: string; // 占用结束时间 (格式: 2025-06-05 13:30:00)
  remark: string; // 备注
}

// 占用数据类型（根据API文档6.2查看占用）
export interface Occupation {
  l_id: string; // 占用id
  l_tid: string; // 员工id
  l_stime: string; // 开始时间（时间戳）
  l_etime: string; // 结束时间（时间戳）
  l_remark: string; // 备注
  l_status: string; // 状态：1 有效，-1 无效
  l_utime: string; // 更新时间
  l_ctime: string; // 创建时间
  l_sdate: string; // 占用开始时间 (格式: 2025-06-05 11:10:00)
  l_edate: string; // 占用结束时间 (格式: 2025-06-05 13:30:00)
}

/** 新增占用（根据API文档6.1新增占用） */
export const addOccupation = (params: AddOccupationParams) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=em_add", {
    data: params
  });
};

/** 查看占用（根据API文档6.2查看占用） */
export const getOccupation = (id: string) => {
  return http.request<ApiResult<Occupation>>(
    "get",
    `/admin/employee.php?act=em_watch&id=${id}`
  );
};

/** 取消占用（根据API文档6.3取消占用） */
export const cancelOccupation = (id: number) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=em_del", {
    data: { id }
  });
};

/** 编辑占用（根据API文档6.4编辑占用） */
export const editOccupation = (params: EditOccupationParams) => {
  return http.request<ApiResult>("post", "/admin/employee.php?act=em_edit", {
    data: params
  });
};
